import Api from "../../utils/api"
import Config from "../../utils/Config"
Page({
  data: {
    isLogin: false,
    userinfo: [],
    activeIndex: 0, //tab切换索引
    SelfRecipe: [], //自己发布的菜谱
    Types:[],
    Foloows:[]
  },
  onLoad() {
    this._checkSession()
    this._getSelfType()
  },
  onShow() {
    this._getSelfRecipe()

  },
  // 登录检测
  _checkSession() {
    wx.checkSession({
      success: (res) => {
        // 读取缓存 获取userinfo的值
        let userinfo = wx.getStorageSync('userinfo')
        this.setData({
          isLogin: true,
          // 调用渲染
          userinfo
        })
      },
      fail: () => {
        wx.showToast({
          title: '登录才有更好的体验',
          icon: "none"
        })
        this.setData({
          isLogin: false
        })
      }
    })
  },
  // 执行登录
  toLogin(e) {
    let that = this;
    // console.log(e);
    // 验证失败
    if (e.detail.errMsg == "getUserInfo:fail auth deny") {
      wx.showToast({
        title: '请登录',
        icon: "none"
      })
    }
    // 同意 获取到用户信息
    wx.login({
      success() {
        let userinfo = e.detail.userInfo
        // 通过云函数获取唯一标识 openid'
        wx.cloud.callFunction({
          name: "login",
          async success(res) {
            // console.log(res.result.openid);
            // 将获取到的openid通过变量保存
            let _openid = res.result.openid;

            // 判断是否为管理员登录
            let myOpenid = _openid == Config.myOpenid ? true : false;
            // 将openid 存入缓存以便随时获取
            wx.setStorageSync('openid', _openid)
            // 给userinfo赋值 将菜单显示的图片变为true，让其显示
            // 将userinfo也保存到缓存里面
            wx.setStorageSync('userinfo', userinfo)
            wx.setStorageSync('myOpenid', myOpenid)
            // 在添加之前，先查询数据库里有没有此内容
            let fild = await Api.findAll(Config.tables.userTable, {
              _openid
            })
            console.log(fild);
            // 如果数据里的没有内容，就允许添加
            if (fild.data.length <= 0) {
              // 3. 将数据添加到数据库里面
              let addRES = await Api.add(Config.tables.userTable, {
                userinfo
              });
            }
            that.setData({
              userinfo,
              isLogin: true
            })
          }
        })
      },
      fail() {
        wx.showToast({
          title: '请求超时',
        })
      }
    })
  },
  // 跳转管理员页面
  goMenyType() {
    // 判断myOpenid是否为true
    let myOpenid = wx.getStorageSync('myOpenid');
    if (myOpenid == true) {
      wx.navigateTo({
        url: '../pbmenutype/pbmenutype',
      })

    }
  },
  // 图片添加按钮
  gopMenu() {
    wx.navigateTo({
      url: '../pbmenu/pbmenu',
    })
  },
  // tab切换
  _changeIndex(e) {
    let that = this;
    let index = e.currentTarget.dataset.index
    this.setData({
      activeIndex: index
    }, function () {
      that._changetab()
    })
  },
  _changetab() {
    let index = this.data.activeIndex;
    // 如果等于0 就渲染自己发布的菜谱页面
    if (index == 0) {
      this._getSelfRecipe();
    } else if (index == 1) {
      this._getSelfType()
    } else {
      this._getSelfFollows()
    }
  },
  // 获取自己发布的菜谱
  async _getSelfRecipe() {
    let openid = wx.getStorageSync('openid');
    // 查询条件 
    let where = {
      _openid: openid,
      status: 1
    }
    // 排序方式
    let orderBy = {
      field: "time",
      sort: "desc"
    }
    // 查询获取数据
    let res = await Api.findAll(Config.tables.recipesTable, where, orderBy);
    // console.log(res);
    this.setData({
      SelfRecipe: res.data
    })
  },
  // 删除事件
  deleRecipe(e) {
    let that = this;
    let _id = e.currentTarget.dataset.id //获取要删除的id
    // 警告提示框
    wx.showModal({
      title: "警告",
      content: "您确定要删除吗?",
      async success(res) {
        if (res.confirm) {
          let res = await Api.updaById(Config.tables.recipesTable, _id, {
            status: 2
          })
          if (res.stats.updated == 1) {
            wx.showToast({
              title: '删除成功',
              icon: "none"
            })
            that._getSelfRecipe()
          }
        }
      }
    })

  },
  // 跳转到详情页面
  getRecipeDetal(e) {
    // 将数据获取出来后进行页面跳转
    let {
      id,
      recipesname
    } = e.currentTarget.dataset
    console.log(id, recipesname);

    wx.navigateTo({
      url: `../recipeDetail/recipeDetail?id=${id}&recipesname=${recipesname}`,
    })

  },
  // 查询自己发布的菜谱
  async _getSelfType() {
    let where = {
      _openid: wx.getStorageSync('openid'),
      status: 1
    }
    let res = await Api.findAll(Config.tables.recipesTable, where)
    //  获取到里面的每一项recipeTypeid
    let typesId = res.data.map((item) => {
      return item.recipeTypeid
    })
    //  去重，将重复的删掉
    typesId = Array.from(new Set(typesId))
    // 遍历每一项
    let allPromise = []
    typesId.forEach((item)=>{
      let promise = Api.findById(Config.tables.recipeTypeTable,item)
      allPromise.push(promise)
    })
    let Types = await Promise.all(allPromise)
    console.log(Types);
    this.setData({
      Types:Types
    })
  },
    // 4.点击查看，跳转到列表页面
    goRecipeList(e){
      let {id,title,tag} = e.currentTarget.dataset
      // 将首页的搜索框内容也存入缓存中
      if(tag == "search"){
        let seach = wx.getStorageSync('seach') || [];
        // 在添加之前先判断是否已经存在该内容 存在返回0 不存在返回-1
       let findIndex = seach.findIndex((item)=>{
          return item == title
      })
       if(findIndex==-1){
        //(2)不存在的话 将查询到的内容添加到第一项
        seach.unshift(title)
       }else{
        //  如果存在的话就删除对应的哪一项 并且重新在第一个添加
         seach.splice(findIndex,1)
         seach.unshift(title)
       }
        // console.log(findIndex);
        //(3). 取缓存里面的内容
        wx.setStorageSync('seach', seach)
      }
      // 跳转 并将id 与title传递过去
      this.setData({
        iptValue:""
      })
      wx.navigateTo({
        url: `../recipelist/recipelist?id=${id}&title=${title}&tag=${tag}`,
      })
    },
  // 5.获取自己关注的菜谱
  async _getSelfFollows(){
    let where = {
      _openid:wx.getStorageSync('openid')
    }
    let res = await Api.findAll(Config.tables.followsTable)
    // 通过获取到的菜谱id，起菜谱表单里查询菜谱信息
    let recipeID = res.data.map((item)=>{
      return item.recipeID
    })
    // console.log(recipeID);
    let allFromise = [];
    recipeID.forEach((item)=>{
      let prmoise = Api.findById(Config.tables.recipesTable,item)
      allFromise.push(prmoise)
    })
    let info = await Promise.all(allFromise)
    this.setData({
      Foloows:info
    })
  },
    // 查看菜谱详情
    getRecipeDetal(e){ 
      console.log(1);
      // 将数据获取出来后进行页面跳转
      let {id,recipesname} = e.currentTarget.dataset
      wx.navigateTo({
        url: `../recipeDetail/recipeDetail?id=${id}&recipesname=${recipesname}`,
      })
    },
})